package p0;

import java.util.LinkedList;

public class Leetcode_3 {

    public int lengthOfLongestSubstring(String s) {
        //  将String转换为sb
        StringBuilder sb = new StringBuilder(s);
        // 队列，方便双指针移动
        LinkedList<Character> ss = new LinkedList<>();
        // 当前最长字串的长度
        int max = 0;
        // 循环每个字符
        for (int i = 0; i < sb.length(); i++) {
            char a = sb.charAt(i);
            if (!ss.contains(a)) {
                // 如果队列中不存在，直接插入
                ss.add(a);
            } else {
                // 如果队列中存在，从队列首依次推出到该字符
                while (ss.pop() != a) {
                }
                // 再把字符添加到队列尾
                ss.add(a);
            }
            // 判断子字符最长长度
            if (max < ss.size()) {
                max = ss.size();
            }
        }
        // 返回结果
        return max;
    }

    public static void main(String[] args) {

    }
}
